package ooday04;
//匿名内部类
public class AnonInnerClassDemo {
    public static void main(String[] args) {
        //1.创建了Inter的一个派生类，但是没有名字
        //2.该派生类创建了一个对象(只能造一个)，名为o1，向上造型为Inter类型
        //3.new Inter() {}是在创建Inter的派生类的对象
        //4.大括号中的为派生类的类体
        Inter o1 =new Inter() {};//匿名内部类
        Inter o2 =new Inter() {};
        //1.创建了Inter的一个派生类，但是没有名字
        //2.该派生类创建了一个对象(只能造一个)，名为o2，向上造型为Inter类型
        //3.大括号中的为派生类的类体

        //class Dog implements Inter {} 1
        //Inter o1 =new Dog();  2 向上造型
        //1.创建了Inter的一个派生类，但是没有名字
        //2.该派生类创建了一个对象(只能造一个)，名为o2，向上造型为Inter类型
        //3.大括号中的为派生类的类体
        int num=5;
        num=6;
        InterInter o3= new InterInter() {
            public void show(){  //因为InterInter里面有方法，实现 必须要重写方法
                System.out.println("111");
                //num=6;//编译错误，匿名内部类不能修改外面局部变量的值
                //因为该变量在匿名内部类会默认为final
            }
        };

        //new InterInter() {
        // public void show(){ }
        // }
        // 等同于class Dog implements InterInter { public void show(){}  }
        o3.show();

    }
}
/*class Dog implements InterInter {
     因为InterInter里面有方法，实现 必须要重写方法
 }
 */

interface  InterInter{
  void  show();//注意抽象方法没有方法体，接口里面默认都是抽象方法不用加abstract
}
interface  Inter{

}